"""
文件相关类定义
"""
#导包
import data_define
import json

#定义抽象类确定有哪些功能要开发
class FileReader:

    def read_data(self) ->list[data_define.Record]:
        pass


#定义子类，读取文本数据（csv）
class TextFileReader(FileReader):

    #构造方法获得文件路径
    def __init__(self,path):
        self.path = path

    #复写父类实现将数据封装到列表中
    def read_data(self) ->list[data_define.Record]:
        f = open(self.path,'r',encoding='UTF-8')

        #循环读取文件每一条数据，封装到列表
        record_list:list[data_define.Record] = list()
        for line in f.readlines():
            line = line.strip()       #注意更新line，只写line.strip()没用
            data_list = line.split(',')
            record = data_define.Record(data_list[0],data_list[1],int(data_list[2]),data_list[3])
            record_list.append(record)

        f.close()
        return record_list

#定义子类，读取json数据
class JsonFileReader(FileReader):

    #构造方法获取文件路径
    def __init__(self,path):
        self.path = path

    #复写父类转化json数据格式，封装到列表
    def read_data(self) ->list[data_define.Record]:
        #读取文件并关闭
        f = open(self.path,'r',encoding='UTF-8')
        data = f.read()

        data_list = json.loads(data)
        f.close()
        print(data_list)
        #遍历json转换成的列表
        record_list: list[data_define.Record] = list()
        for data in data_list:
            record = data_define.Record(data['date'],data['order_id'],int(data['money']),data['province'])
            record_list.append(record)

        return record_list
#测试
if __name__ == '__main__':
    text_file_reader = TextFileReader("E:/python_resource/2011年1月销售数据（文本）.txt")
    json_file_reader = JsonFileReader("E:/python_resource/2011年2月销售数据（json）.txt")
    list1 = text_file_reader.read_data()
    list2 = json_file_reader.read_data()
    for l in list1:       #要循环打印，不能直接打印
        print(l)
    for l in list2:
        print(l)
